import cv2
import numpy as np

img = cv2.imread('../images/lena.png')
h, w, _ = img.shape

# 1. 转为灰度图
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 2. 创建一个和原图大小一样的全零图片，用于存储浮雕效果
img_FuDiao = np.zeros_like(img)

# 3. 通过两层循环，对图片进行扫描
# 计算当前像素点与相邻像素点之间的差值，并保存到新的图片中
for i in range(h):
    for j in range(w - 2):
        p0 = img_gray[i, j]
        p2 = img_gray[i, j + 2]
        newP = p0 - p2 + 150
        # 计算得到的差值在0-255之间，否则将值限制在0-255
        if newP > 255:
            newP = 255
        elif newP < 0:
            newP = 0
        # 或者使用方法2：使用np.clip限制值范围
        # newP = np.clip(p0 - p2 + 150, 0, 255)
        # 新计算的像素值赋值到新的图片中
        img_FuDiao[i, j] = newP

cv2.imshow('img_fuDiao', img_FuDiao)
cv2.waitKey(0)